home *** CD-ROM | disk | FTP | other *** search
/ Konami E3 2004 (USA) / Konami - E3 2004 (USA).bin / Dispatcher.js < prev    next >
Text File  |  2003-07-26  |  17KB  |  607 lines

  1. /*********************************************************************
  2.  *
  3.  * Macromedia Flash Dispatcher -- a scriptable detector for Flash Player
  4.  *
  5.  *
  6.  * copyright (c) 2000 Macromedia, Inc.
  7.  *
  8.  *********************************************************************/
  9.  
  10.  
  11. /*
  12.  * URL of the Flash self-detecting movie ("sniffer").
  13.  *
  14.  * Reset this if you move the file out of the directory in which the
  15.  * document containing the script that calls MM_FlashDispatch() resides.
  16.  */
  17.  
  18. var MM_FlashSnifferURL = "detectFlash.swf";
  19.  
  20.  
  21. /*
  22.  * Latest available revisions of the Plug-in.
  23.  */
  24.  
  25. var MM_latestPluginRevision = new Object();
  26. MM_latestPluginRevision["6.0"] = new Object();
  27. MM_latestPluginRevision["5.0"] = new Object();
  28. MM_latestPluginRevision["4.0"] = new Object();
  29. MM_latestPluginRevision["3.0"] = new Object();
  30. MM_latestPluginRevision["2.0"] = new Object();
  31.  
  32. /*
  33.  * This table must be updated as new versions and revisions of the
  34.  * plug-in are released, in support of the 'requireLatestRevision'
  35.  * option in MM_FlashDispatch().
  36.  */
  37. //FS 103101 - the 6.0 revision numbers need to be updated once we know the revision numbers will be.
  38. MM_latestPluginRevision["6.0"]["Windows"] = 29;
  39. MM_latestPluginRevision["6.0"]["Macintosh"] = 29;
  40.  
  41. MM_latestPluginRevision["5.0"]["Windows"] = 42;
  42. MM_latestPluginRevision["5.0"]["Macintosh"] = 41;
  43.  
  44. MM_latestPluginRevision["4.0"]["Windows"] = 28;
  45. MM_latestPluginRevision["4.0"]["Macintosh"] = 27;
  46. MM_latestPluginRevision["4.0"]["Unix"] = 12;
  47.  
  48. MM_latestPluginRevision["3.0"]["Windows"] = 10;
  49. MM_latestPluginRevision["3.0"]["Macintosh"] = 10;
  50.  
  51. MM_latestPluginRevision["2.0"]["Windows"] = 11;
  52. MM_latestPluginRevision["2.0"]["Macintosh"] = 11;
  53.  
  54.  
  55. /*
  56.  * MM_FlashInfo() -- construct an object representing Flash Player status
  57.  *
  58.  * Constructor:
  59.  *
  60.  *    new MM_FlashInfo()
  61.  *
  62.  * Properties:
  63.  *
  64.  *    installed        true if player is installed
  65.  *                (undefined if undetectable)
  66.  *
  67.  *    implementation        the form the player takes in this
  68.  *                browser: "ActiveX control" or "Plug-in"
  69.  *
  70.  *    autoInstallable        true if the player can be automatically
  71.  *                installed/updated on this browser/platform
  72.  *
  73.  *    version            player version if installed
  74.  *
  75.  *    revision        revision if implementation is "Plug-in"
  76.  *
  77.  * Methods:
  78.  *
  79.  *    canPlay(contentVersion)    true if installed player is capable of
  80.  *                playing content authored with the
  81.  *                specified version of Flash software
  82.  *
  83.  * Description:
  84.  *
  85.  *    MM_FlashInfo() instantiates an object that contains as much
  86.  *    information about Flash Player--whether it is installed, what
  87.  *    version is installed, and so one--as is possible to collect.
  88.  *
  89.  *    Where Flash Player is implemented as a plug-in and the user's
  90.  *    browser supports plug-in detection, all properties are defined;
  91.  *    this includes Netscape on all platforms and Microsoft Internet
  92.  *    Explorer 5 on the Macintosh.  Where Flash Player is implemented
  93.  *    as an ActiveX control (MSIE on Windows), all properties except
  94.  *    'revision' are defined.
  95.  *
  96.  *    Prior to version 5, Microsoft Internet Explorer on the Macintosh
  97.  *    did not support plug-in detection.  In this case, no properties
  98.  *    are defined, unless the cookie 'MM_FlashDetectedSelf' has been
  99.  *    set, in which case all properties except 'version' and 'revision'
  100.  *    are set.
  101.  *
  102.  *    This object is primarily meant for use by MM_FlashDispatch(), but
  103.  *    may be of use in reporting the player version, etc. to the user.
  104.  */
  105.  
  106. var MM_FlashControlInstalled;    // is the Flash ActiveX control installed?
  107. var MM_FlashControlVersion;    // ActiveX control version if installed
  108.  
  109. function MM_FlashInfo()
  110. {
  111.     if (navigator.plugins && navigator.plugins.length > 0)
  112.     {
  113.     this.implementation = "Plug-in";
  114.     this.autoInstallable = false;    // until Netscape SmartUpdate supported
  115.  
  116.     // Check whether the plug-in is installed:
  117.  
  118.     if (navigator.plugins["Shockwave Flash"])
  119.     {
  120.         this.installed = true;
  121.  
  122.         // Get the plug-in version and revision:
  123.  
  124.         var words =
  125.         navigator.plugins["Shockwave Flash"].description.split(" ");
  126.  
  127.         for (var i = 0; i < words.length; ++i)
  128.         {
  129.         if (isNaN(parseInt(words[i])))
  130.         continue;
  131.  
  132.         this.version = words[i];
  133.         
  134.  
  135.         this.revision = parseInt(words[i + 1].substring(1));
  136.         }
  137.     }
  138.     else
  139.     {
  140.         this.installed = false;
  141.     }
  142.     }
  143.     else if (MM_FlashControlInstalled != null)
  144.     {
  145.     this.implementation = "ActiveX control";
  146.     this.installed = MM_FlashControlInstalled;
  147.     this.version = MM_FlashControlVersion;
  148.     this.autoInstallable = true;
  149.     }
  150.     else if (MM_FlashDetectedSelf())
  151.     {
  152.     this.installed = true;
  153.     this.implementation = "Plug-in";
  154.     this.autoInstallable = false;
  155.     }
  156.  
  157.     this.canPlay = MM_FlashCanPlay;
  158. }
  159.  
  160.  
  161. /*
  162.  * MM_FlashDispatch() -- get Flash Player status and redirect appropriately
  163.  *
  164.  * Synopsis:
  165.  *
  166.  *    MM_FlashDispatch(contentURL, contentVersion, requireLatestRevision,
  167.  *             upgradeURL, install, installURL, altURL,
  168.  *             overridePluginsPage)
  169.  *
  170.  *    Arguments:
  171.  *
  172.  *        contentURL            URL of document containing Flash content
  173.  *
  174.  *        contentVersion        version of Flash software used to
  175.  *                    author content
  176.  *
  177.  *        requireLatestRevision    Boolean indicating whether to require
  178.  *                    latest revision of player (plug-in only)
  179.  *
  180.  *        upgradeURL            document to load if player must be
  181.  *                    upgraded to play content and automated
  182.  *                    updating is not supported on the user's
  183.  *                    browser & platform
  184.  *
  185.  *        install            Boolean indicating whether to install
  186.  *                    if player is not installed
  187.  *
  188.  *        installURL            document to load if 'install' is true
  189.  *                    and automated installation is not
  190.  *                    supported on user's browser & platform
  191.  *
  192.  *        altURL            document to load if 'install' is false
  193.  *
  194.  *        overridePluginsPage        Boolean indicating whether to set the
  195.  *                    PLUGINSPAGE attribute for the embedded
  196.  *                    Flash Player sniffer to `installURL'
  197.  *        disableAutoInstall        Boolean indicating that the auto-installation
  198.  *                    should not occur and that the user will go to the installURL
  199.  *                     or to the upgradeURL as specified
  200.                     
  201.  *
  202.  *    Returns:
  203.  *
  204.  *        Normally, never returns; changes window.location.
  205.  *        Returns with no value when called improperly.
  206.  *
  207.  * Description:
  208.  *
  209.  *    MM_FlashDispatch() detects whether the user's Web browser has the
  210.  *    Flash plug-in or ActiveX control installed, and what version is
  211.  *    installed if so. It then takes appropriate action based on whether
  212.  *    Flash Player is installed and is compatible with 'contentVersion':
  213.  *    load a document containing Flash content, load alternate content,
  214.  *    or oversee the updating or installation of the player.
  215.  *
  216.  *    There are three possible outcomes of the detection process: 
  217.  *
  218.  *        1. A version of Flash Player has been detected that is
  219.  *           suitable for playing the requested content version.
  220.  *           MM_FlashDispatch() will load 'contentURL'.
  221.  *
  222.  *        2. An unsuitable version of Flash Player has been detected.
  223.  *           MM_FlashDispatch() will load 'contentURL' if automated
  224.  *           updating is supported on the user's browser & platform;
  225.  *           otherwise, it will load 'upgradeURL'.
  226.  *
  227.  *        3. Flash Player is not installed.  If 'install' is set to
  228.  *           true, MM_FlashDispatch() will load 'contentURL' if the
  229.  *           user's browser supports automated installation; otherwise,
  230.  *           it will load 'installURL'.  If 'install' is false,
  231.  *           MM_FlashDispatch() will load 'altURL'.
  232.  *
  233.  *    When script-based detection of Flash Player is not possible,
  234.  *    MM_FlashDispatch() attempts to load a Flash movie to carry out
  235.  *    the detection. If Flash Player is not installed, there is presently
  236.  *    no choice but to let the browser redirect the user via the
  237.  *    PLUGINSPAGE attribute of the EMBED tag. In this case, 'install'
  238.  *    is ignored, but setting 'overridePluginsPage' to true will
  239.  *    set PLUGINSPAGE to 'installURL', overriding its default value
  240.  *    (the URL for the Macromedia Flash download center). If this flag
  241.  *    is set, 'installURL' must be absolute, not relative.
  242.  */
  243.  
  244. var MM_FlashPluginsPage = "http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash";
  245.  
  246. function MM_FlashDispatch(contentURL, contentVersion, requireLatestRevision,
  247.               upgradeURL, install, installURL, altURL,
  248.               overridePluginsPage,disableAutoInstall)
  249. {
  250.     if (disableAutoInstall == null)
  251.     {
  252.     alert("ERROR: MM_FlashDispatch() called with too few arguments.");
  253.     return;
  254.     }
  255.  
  256.  
  257.     if (overridePluginsPage && installURL.substring(0, 7) != "http://")
  258.     {
  259.     alert("ERROR: MM_FlashDispatch() called with relative URL" +
  260.         " for PLUGINSPAGE (" + installURL + ")");
  261.  
  262.     return;
  263.     }
  264.  
  265.  
  266.     var player = new MM_FlashInfo();
  267.  
  268.     if (player.installed == null)
  269.     {
  270.     var sniffer =
  271.         "<EMBED HIDDEN=\"true\" TYPE=\"application/x-shockwave-flash\"" +
  272.           " WIDTH=\"18\" HEIGHT=\"18\"" +
  273.           " BGCOLOR=\"" + document.bgcolor + "\"" +
  274.           " SRC=\"" + MM_FlashSnifferURL +
  275.             "?contentURL=" + contentURL + "?" +
  276.             "&contentVersion=" + contentVersion +
  277.             "&requireLatestRevision=" + requireLatestRevision +
  278.             "&latestRevision=" +
  279.                 MM_FlashLatestPluginRevision(contentVersion) +
  280.             "&upgradeURL=" + upgradeURL +
  281.             "\"" +
  282.           " LOOP=\"false\" MENU=\"false\"" +
  283.           " PLUGINSPAGE=\"" +
  284.             (overridePluginsPage ? installURL : MM_FlashPluginsPage) +
  285.             "\"" +
  286.         ">" +
  287.         "</EMBED>";
  288.  
  289.     document.open();
  290.     document.write("<HTML><HEAD><TITLE>");
  291.     document.write("Checking for the Flash Player");
  292.     document.write("</TITLE></HEAD>");
  293.     document.write("<BODY BGCOLOR=\"" + document.bgcolor + "\">");
  294.     document.write(sniffer);
  295.     document.write("</BODY>");
  296.     document.write("</HTML>");
  297.     document.close();
  298.     }
  299.     else if (player.installed)
  300.     {
  301.     if (player.canPlay(contentVersion, requireLatestRevision))
  302.     {
  303.         location = contentURL;
  304.     }
  305.     else
  306.     {
  307.     if (disableAutoInstall)
  308.     {
  309.     location = upgradeURL;
  310.     }else
  311.     {
  312.         location = player.autoInstallable ? contentURL : upgradeURL;
  313.     }
  314.     }
  315.     }
  316.     else if (install)
  317.     {
  318.     if (disableAutoInstall){
  319.     location = installURL;
  320.     }
  321.     else{
  322.     location = player.autoInstallable ? contentURL : installURL;
  323.     }
  324.     }
  325.     else
  326.     {
  327.     location = altURL;
  328.     }
  329. }
  330.  
  331.  
  332. /*
  333.  * MM_FlashRememberIfDetectedSelf() -- record that Flash Player detected itself
  334.  *
  335.  * Synopsis:
  336.  *
  337.  *    MM_FlashRememberIfDetectedSelf()
  338.  *    MM_FlashRememberIfDetectedSelf(count)
  339.  *    MM_FlashRememberIfDetectedSelf(count, units)
  340.  *
  341.  *    Arguments:
  342.  *
  343.  *        count        length of time in units before re-checking
  344.  *                whether content can be played (default: 60)
  345.  *
  346.  *        units        unit(s) of time to count: "minute(s)," "hour(s)"
  347.  *                 or "day(s)" (default: "days")
  348.  *
  349.  *
  350.  * Description:
  351.  *
  352.  *    This function conditionally sets a cookie signifying that
  353.  *    the current document was referred via the Dispatcher using
  354.  *    Flash Player self-detection.  It is intended to spare the user
  355.  *    whose browser does not support script-based detection from the
  356.  *    process of Flash Player self-detection on each visit.
  357.  *    
  358.  *    The cookie persists for 60 days, or for the amount of time
  359.  *    specified by the 'count' and 'units' parameters.
  360.  *
  361.  *    If cookies are not being accepted, this function is a no-op;
  362.  *    the Dispatcher will simply attempt Flash Player self-detection
  363.  *    on subsequent visits.
  364.  *
  365.  *    This function must be called from a script embedded in the
  366.  *    document referenced by the 'contentURL' argument to
  367.  *    MM_FlashDispatch().
  368.  *
  369.  */
  370.  
  371. function MM_FlashRememberIfDetectedSelf(count, units)
  372. {
  373.     // the sniffer appends an empty search string to the URL
  374.     // to indicate that it is the referrer
  375.  
  376.     if (document.location.search.indexOf("?") != -1)
  377.     {
  378.     if (!count) count = 60;
  379.     if (!units) units = "days";
  380.  
  381.     var msecs = new Object();
  382.  
  383.     msecs.minute = msecs.minutes = 60000;
  384.     msecs.hour = msecs.hours = 60 * msecs.minute;
  385.     msecs.day = msecs.days = 24 * msecs.hour;
  386.  
  387.     var expires = new Date();
  388.  
  389.     expires.setTime(expires.getTime() + count * msecs[units]);
  390.  
  391.     document.cookie =
  392.         'MM_FlashDetectedSelf=true ; expires=' + expires.toGMTString();
  393.     }
  394. }
  395.  
  396.  
  397. /*
  398.  * MM_FlashDemur() -- record user's decision not to install Flash Player
  399.  *
  400.  * Synopsis:
  401.  *
  402.  *    MM_FlashDemur()
  403.  *    MM_FlashDemur(count)
  404.  *    MM_FlashDemur(count, units)
  405.  *
  406.  *    Arguments:
  407.  *
  408.  *        count    length of time in units to remember decision
  409.  *            (default: 60)
  410.  *
  411.  *        units    unit(s) of time to count: "minute(s)," "hour(s)"
  412.  *            or "day(s)" (default: "days")
  413.  *
  414.  *    Returns:
  415.  *
  416.  *        true if successful; false otherwise.
  417.  *
  418.  * Description:
  419.  *
  420.  *    MM_FlashDemur() sets a cookie signifying that the user requested
  421.  *    that the decision not to install Flash be remembered.
  422.  *
  423.  *    The cookie persists for 60 days, or for the amount of time
  424.  *    specified by the 'count' and 'units' parameters.
  425.  *
  426.  *    This function may be used as the handler for the 'onClick' event
  427.  *    associated with the user's selecting a link to alternate content.
  428.  *    If cookies are not being accepted, it will return false; this
  429.  *    may be used to control whether the link is followed.
  430.  */
  431.  
  432. function MM_FlashDemur(count, units)
  433. {
  434.     if (!count) count = 60;
  435.     if (!units) units = "days";
  436.  
  437.     var msecs = new Object();
  438.  
  439.     msecs.minute = msecs.minutes = 60000;
  440.     msecs.hour = msecs.hours = 60 * msecs.minute;
  441.     msecs.day = msecs.days = 24 * msecs.hour;
  442.  
  443.     var expires = new Date();
  444.  
  445.     expires.setTime(expires.getTime() + count * msecs[units]);
  446.  
  447.     document.cookie =
  448.     'MM_FlashUserDemurred=true ; expires=' + expires.toGMTString();
  449.  
  450.  
  451.     if (!MM_FlashUserDemurred())
  452.     {
  453.     alert("Your browser must accept cookies in order to " +
  454.           "save this information.  Try changing your preferences.");
  455.  
  456.     return false;
  457.     }
  458.     else
  459.     return true;
  460. }
  461.  
  462.  
  463. /*
  464.  * MM_FlashUserDemurred() -- recall user's decision not to install Flash Player
  465.  *
  466.  * Synopsis:
  467.  *
  468.  *    MM_FlashUserDemurred()
  469.  *
  470.  *    Returns:
  471.  *
  472.  *        true if a cookie signifying that the user declined to install
  473.  *        Flash Player is set; false otherwise.
  474.  *
  475.  * Description:
  476.  *
  477.  *    This function is useful in determining whether to set the 'install'
  478.  *    flag when calling MM_FlashDispatch().  If true, it means that the
  479.  *    user's previous decision not to install Flash Player should be
  480.  *    honored, i.e., 'install' should be set to false.
  481.  */
  482.  
  483. function MM_FlashUserDemurred()
  484. {
  485.     return (document.cookie.indexOf("MM_FlashUserDemurred") != -1);
  486. }
  487.  
  488.  
  489. /*********************************************************************
  490.  * THE FOLLOWING FUNCTIONS ARE NOT PUBLIC.  DO NOT CALL THEM DIRECTLY.
  491.  *********************************************************************/
  492.  
  493. /*
  494.  * MM_FlashLatestPluginRevision() -- look up latest Flash Player plug-in
  495.  *                     revision for this platform
  496.  *
  497.  * Synopsis:
  498.  *
  499.  *    MM_FlashLatestPluginRevision(playerVersion)
  500.  *
  501.  *    Arguments:
  502.  *
  503.  *        playerVersion    plug-in version to look up revision of
  504.  *
  505.  *    Returns:
  506.  *
  507.  *        The latest available revision of the specified version of
  508.  *        the Flash Player plug-in on this platform, as an integer;
  509.  *        undefined for versions before 2.0.
  510.  *
  511.  * Description:
  512.  *
  513.  *    This look-up function is only intended to be called internally.
  514.  */
  515.  
  516. function MM_FlashLatestPluginRevision(playerVersion)
  517. {
  518.     var latestRevision;
  519.     var platform;
  520.  
  521.     if (navigator.appVersion.indexOf("Win") != -1)
  522.     platform = "Windows";
  523.     else if (navigator.appVersion.indexOf("Macintosh") != -1)
  524.     platform = "Macintosh";
  525.     else if (navigator.appVersion.indexOf("X11") != -1)
  526.     platform = "Unix";
  527.  
  528.     latestRevision = MM_latestPluginRevision[playerVersion][platform];
  529.  
  530.     return latestRevision;
  531. }
  532.  
  533.  
  534. /*
  535.  * MM_FlashCanPlay() -- check whether installed Flash Player can play content
  536.  *
  537.  * Synopsis:
  538.  *
  539.  *    MM_FlashCanPlay(contentVersion, requireLatestRevision)
  540.  *
  541.  *    Arguments:
  542.  *
  543.  *        contentVersion        version of Flash software used to
  544.  *                    author content
  545.  *
  546.  *        requireLatestRevision    Boolean indicating whether latest
  547.  *                    revision of plug-in should be required
  548.  *
  549.  *    Returns:
  550.  *
  551.  *        true if the installed player can play the indicated content;
  552.  *        false otherwise.
  553.  *
  554.  * Description:
  555.  *
  556.  *    This function is not intended to be called directly, only
  557.  *    as an instance method of MM_FlashInfo.
  558.  */
  559.  
  560. function MM_FlashCanPlay(contentVersion, requireLatestRevision)
  561. {
  562.     var canPlay;
  563.  
  564.     if (this.version)
  565.     {
  566.     canPlay = (parseInt(contentVersion) <= this.version);
  567.  
  568.     if (requireLatestRevision)
  569.     {
  570.         if (this.revision &&
  571.         this.revision < MM_FlashLatestPluginRevision(this.version))
  572.         {
  573.         canPlay = false;
  574.         }
  575.     }
  576.     }
  577.     else
  578.     {
  579.     canPlay = MM_FlashDetectedSelf();
  580.     }
  581.  
  582.     return canPlay;
  583. }
  584.  
  585.  
  586. /*
  587.  * MM_FlashDetectedSelf() -- recall whether Flash Player has detected itself
  588.  *
  589.  * Synopsis:
  590.  *
  591.  *    MM_FlashDetectedSelf()
  592.  *
  593.  *    Returns:
  594.  *
  595.  *        true if a cookie signifying that Flash Player has detected itself
  596.  *        is set; false otherwise.
  597.  *
  598.  * Description:
  599.  *
  600.  *    This function is only meant to be called internally.
  601.  */
  602.  
  603. function MM_FlashDetectedSelf()
  604. {
  605.     return (document.cookie.indexOf("MM_FlashDetectedSelf") != -1);
  606. }
  607.